From: Florian Müllner Date: Wed, 27 Nov 2019 22:01:15 +0000 (+0100) Subject: weather: Only require auto-location authorization if sandboxed X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~319 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=154655838d3f456db50981a0efa24b652c14c3ee;p=gnome-shell.git weather: Only require auto-location authorization if sandboxed Since commit 87e60ed97843, geoclue no longer pretends that authorization is useful for system-installed apps (as they can easily lie about their ID). Unfortunately this broke our auto-location support in case Weather is installed non-sandboxed, as we are waiting for an authorization that will never happen. Unbreak it by only requiring authorization when installed as Flatpak. https://gitlab.gnome.org/GNOME/gnome-shell/issues/1823 --- diff --git a/js/misc/weather.js b/js/misc/weather.js index 2c6548770..c0dc80cf8 100644 --- a/js/misc/weather.js +++ b/js/misc/weather.js @@ -32,6 +32,7 @@ var WeatherClient = class { this._gclueStarting = false; this._gclueLocationChangedId = 0; + this._needsAuth = true; this._weatherAuthorized = false; this._permStore = new PermissionStore.PermissionStore((proxy, error) => { if (error) { @@ -142,7 +143,7 @@ var WeatherClient = class { get _useAutoLocation() { return this._autoLocationRequested && this._locationSettings.get_boolean('enabled') && - this._weatherAuthorized; + (!this._needsAuth || this._weatherAuthorized); } _onWeatherProxyReady(o, res) { @@ -175,6 +176,13 @@ var WeatherClient = class { if (hadApp !== haveApp) this.emit('changed'); + + let neededAuth = this._needsAuth; + this._needsAuth = this._weatherApp === null || + this._weatherApp.app_info.has_key('X-Flatpak'); + + if (neededAuth !== this._needsAuth) + this._updateAutoLocation(); } _loadInfo() {